
常用的通信协议总结

A 概念相关
1. 并行通信 & 串行通信
- 并行通信 在同一时刻发送多位数据,优点是速度快,但是传输距离短(长距离信号同步困难,干扰大),通常要多根线
- 串行通信 逐位顺序传输数据,优点是布线简单,距离远,差发信号时抗干扰能力强
2. 全双工 & 半双工 & 单工
- 单工 只能接受或者发送。例如:收音机、遥控器等,一般只有一根线
- 全双工 在同一时刻只能发送或者接收。例如:对讲机,至少有两根线;
- 半双工 在同一时刻既能接收又能发送。例如:电话,至少有两根线。
3. 同步通信 & 异步通信
- 同步通信 需要时钟线同步信号,例如IIC和SPI等,其中USART(通用同步异步串行收发器),支持同步通信和异步通信
- 异步通信 事先约定好大致的速度(波特率),例如串口(UART)(通用异步收发器)
B 常见硬件通信协议
1. UART协议
通过RX TX 两根线实现异步全双工通信,不需用共享时钟信号,只需用根据事先约定好的数据格式和波特率即可正常工作
关键参数: 波特率 停止位 数据位 校验位
一个完整的数据帧通常由以下部分组成
起始位+数据位+校验位+停止位 起始位为低电平(0),停止位为高电平(1),数据位一般为8位,传输顺序是低位 (LSB) 先发,校验位(可选)通常为奇校验/偶校验
电平标准:信号在物理介质上的表示
电平标准 | 逻辑 0 | 逻辑 1 | 特点与用途 |
---|---|---|---|
TTL/CMOS | 0V (或 <0.8V) | 3.3V 或 5V (>2.4V) | 板内短距离通信(<1米),如MCU之间、MCU与传感器模块之间。 |
RS-232 | +3V ~ +15V (正电压) | -3V ~ -15V (负电压) | 抗干扰能力强,支持较长距离(约15米)。注意:逻辑定义与TTL相反。 |
RS-485 | A线电压 > B线电压 (差分, A+ B-) | B线电压 > A线电压 (差分, A- B+) | 差分信号,抗共模干扰能力极强,支持多点通信和长距离(可达1200米),常用于工业环境。 |
2. IIC协议
1)协议介绍-IIC
I2C(IIC)是一种两线式串行总线,采用“一主多从”的总线结构,每个设备都有唯一的设备地址,用于区分同一总线上的其他设备。
IIC总线由两根双向线组成:
- SCL(串行时钟线):用于同步数据传输。
- SDA(串行数据线):用于发送和接收数据。
通信由主设备发起,从设备被动响应。IIC具有低功耗和完善的应答机制,增强了通信的可靠性。
2)IIC的5种传输速率
I2C协议支持以下5种速率模式,不同设备可能支持不同的速率:
- 标准模式(Standard):100 kbps
- 快速模式(Fast):400 kbps
- 快速模式+(Fast-Plus):1 Mbps
- 高速模式(High-speed):3.4 Mbps
- 超快模式(Ultra-Fast):5 Mbps(单向传输)
说明:超快模式通常用于LED、LCD等不需要应答的器件,仅进行写数据操作,不需要ACK应答信号。
3)IIC的4种信号
IIC协议的基础信号包括:起始信号、停止信号、应答信号和非应答信号。
起始信号
当SCL为高电平时,SDA从高电平跳变到低电平,定义为起始信号(START)。停止信号
当SCL为高电平时,SDA从低电平跳变到高电平,定义为停止信号(STOP)。应答信号
从设备接收到主设备的数据后,在第9个SCL时钟周期内,将SDA拉低,表示“已收到数据”。非应答信号
在第9个SCL时钟周期内,SDA保持高电平,表示“未收到数据”。
4)数据有效性
IIC协议规定:
- 数据采样发生在SCL高电平期间。
- 除了起始和停止信号外,数据传输期间,SCL为高电平时,SDA必须保持稳定;只有在SCL为低电平时,SDA才允许变化。
5)读写时序
写操作时序
主设备向从设备的指定寄存器地址写入数据的时序如下:- 主设备发送起始信号:通知总线上的所有设备开始通信。
- 主设备发送从设备地址(含读/写位):指定目标从设备,并指明接下来的操作是写入(写位为0)。
- 从设备发送应答信号:从设备检测到自己的地址后,拉低SDA线,表示已准备好接收数据。
- 主设备发送寄存器地址:指定从设备中目标寄存器的地址。
- 从设备发送应答信号:确认接收到寄存器地址。
- 主设备发送数据:将需要写入的数据发送到从设备。
- 从设备发送应答信号:确认接收到数据。
- 主设备发送停止信号:结束通信。
说明:写操作时序中,主设备始终控制数据的发送,从设备仅负责接收数据并发送应答信号。
读操作时序
主设备从从设备的指定寄存器地址读取数据的时序如下:- 主设备发送起始信号:通知总线上的所有设备开始通信。
- 主设备发送从设备地址(含写位):指定目标从设备,并指明接下来的操作是写入(写位为0)。
- 从设备发送应答信号:从设备检测到自己的地址后,拉低SDA线,表示已准备好接收数据。
- 主设备发送寄存器地址:指定从设备中目标寄存器的地址。
- 从设备发送应答信号:确认接收到寄存器地址。
- 主设备发送重复起始信号:重新发起通信,准备读取数据。
- 主设备发送从设备地址(含读位):指定目标从设备,并指明接下来的操作是读取(读位为1)。
- 从设备发送应答信号:确认接收到读请求。
- 从设备发送数据:将目标寄存器中的数据发送到主设备。
- 主设备发送非应答信号:表示数据已接收完毕,不再需要更多数据。
- 主设备发送停止信号:结束通信。
说明:读操作时序中,主设备在发送寄存器地址后需要重新发起起始信号(重复起始信号),以切换到读取模式。
6)为什么IIC需要上拉电阻?
IIC总线的SCL和SDA线均为开漏(OD)输出,开漏输出只能输出低电平,不能输出高电平。为了使总线空闲时保持高电平,需要通过上拉电阻将其拉高。
作用:
- 确保总线空闲时为高电平。
- 提高信号的抗干扰能力。
3. SPI协议
1)协议介绍-SPI
SPI(Serial Peripheral Interface)是一种高速、全双工、同步的通信总线,通常用于主设备(Master)与从设备(Slave)之间的通信。SPI仅需4根线即可实现通信,分别是:
- MISO:主设备输入,从设备输出。
- MOSI:主设备输出,从设备输入。
- SCLK:串行时钟信号,由主设备生成。
- CS:片选信号,用于选择具体的从设备(低电平有效)。
2)通信原理
- 主设备通过拉低片选信号(CS)选择目标从设备。
- 数据通过MOSI和MISO线传输,时钟信号(SCLK)同步数据采样。
- 数据采样时机由时钟的极性(CPOL)和相位(CPHA)决定,这是SPI的两个主要参数,而IIC固定,由SCL高电平时采样
3)优缺点
优点:
- 高速全双工通信。
- 硬件简单,支持任意数据长度。
- 支持一主多从
缺点:
- 需要更多引脚(4根线)。
- 无硬件应答信号,缺乏错误检测机制。
- 通信距离较短,通常仅支持一个主设备。
4. CAN协议
1)协议介绍
CAN(Controller Area Network)是一种多主方式的串行通信总线,最初由德国 Bosch 公司在 1980 年代末提出,广泛应用于汽车电子、工业自动化等领域。CAN总线具有高实时性、可靠性和抗干扰能力,支持多节点通信。
2)CAN总线结构
- 闭环结构:两根信号线(CANH 和 CANL)形成回路,总线两端连接 120 欧姆终端电阻,支持高速短距离通信(125 kbps ~ 1 Mbps,最长 40 米)。
- 开环结构:两根信号线独立,各自串联 2.2 kΩ 电阻,支持低速长距离通信(最高 125 kbps,最长 1000 米)。
- 差分信号传输:通过 CANH 和 CANL 的电压差传递信息,具有良好的抗干扰能力。
3)CAN总线特点
- 实时性:仲裁机制和帧优先级设计保证低延迟和高实时性。
- 多主机系统:支持多个节点同时发送和接收数据,无主从之分。
- 差分信号传输:抗干扰能力强,适用于工业环境。
- 仲裁机制:通过消息标识符优先级决定发送权,避免冲突。
- 广播通信:数据帧可被所有节点接收,便于信息共享。
- 错误检测:内置 CRC 校验和错误处理机制,确保通信可靠性。
- 灵活性:支持不同波特率,适应多种应用场景。
4)CAN总线帧类型
帧类型 | 帧用途 |
---|---|
数据帧 (Data frame) | 节点发送的包含ID和数据的帧,用于发送单元向接收单元传送数据。 |
遥控帧 (Remote frame) | 接收单元向发送单元请求发送具有特定标识符的数据所用的帧,本身不包含数据段。 |
错误帧 (Error frame) | 当节点检测出错误时,用于向其他所有单元通知错误的帧。 |
过载帧 (Overload frame) | 接收单元通知其尚未做好接收准备的帧,用于请求发送节点延迟发送。 |
帧间隔 (Inter-frame space) | 用于将数据帧及遥控帧与前面的帧分离开来的段,包含间歇和总线空闲段。 |
5)优缺点
优点:
- 高实时性和可靠性。
- 支持多主机通信,当多主机同时发送消息时,有优先级法则来控制先后发送
- 抗干扰能力强,适合工业环境。
缺点:
- 通信速率受限于总线长度。
- 半双工通信,不能同时发送和接收。
- 无时钟信号,需统一波特率。
CAN协议还有优先级法则,可以参考一文读懂CAN总线协议
4. RS-485 & RS-232 & USB
RS-232、RS-485 和 USB 对比
特性 | RS-232 | RS-485 | USB (Universal Serial Bus) |
---|---|---|---|
通信方式 | 点对点 (Peer-to-Peer) | 多点 (Multi-drop),支持总线式拓扑,一台主设备可带多个从设备 | 主从结构 (Host-Slave) 的树形拓扑,一个主机最多可连接127个设备(需通过集线器扩展) |
信号类型 | 单端信号 (Single-ended) | 差分信号 (Differential) | 差分信号 (Differential) (D+ 和 D-) |
传输距离 | 短(通常 ≤ 15米) | 长(可达 1200米,速率降低时更远) | 短(通常 ≤ 5米,高速信号衰减限制;可通过有源延长器扩展) |
最大速率 | 较低(通常 115.2 kbps,特定条件下可达更高) | 较高(10 Mbps 短距离,距离增加则速率下降) | 极高(USB 2.0: 480 Mbps; USB 3.0: 5 Gbps; USB 4: 40 Gbps) |
抗干扰能力 | 弱(单端信号易受共模噪声影响) | 强(差分信号天生抗共模干扰) | 强(差分信号抗干扰;协议层有CRC校验和重传机制) |
供电能力 | 无(仅定义信号,不提供电源) | 无(仅定义信号,不提供电源) | 有(提供 5V 电源,USB 2.0最大500mA,USB 3.0最大900mA,USB PD协议可支持更高功率) |
典型应用 | 工业控制、老式调制解调器、串口调试 | 工业自动化、楼宇自控、长距离数据采集 | 外设连接(键盘、鼠标、打印机)、大容量存储(U盘、移动硬盘)、高速数据采集 |
成本与复杂度 | 低(硬件简单,协议简单) | 中(需终端电阻,协议简单) | 高(协议复杂,需专用控制器和驱动) |
5. TCP & UDP & HTTP
对比维度 | TCP(传输控制协议) | UDP(用户数据报协议) |
---|---|---|
连接方式 | 面向连接(三次握手,四次挥手) | 无连接(直接发送数据,无需建立或释放连接) |
可靠性 | 可靠(保证数据不丢失、不重复、按序到达) | 不可靠(可能丢包、乱序,需应用层处理) |
传输模式 | 字节流(将数据视为连续的字节序列) | 数据报(以独立数据包为单位传输,边界清晰) |
拥塞控制 | 支持(通过慢启动、拥塞避免等算法调节发送速率) | 不支持(无论网络状态如何,持续按原速率发送) |
流量控制 | 支持(滑动窗口机制,避免接收方缓冲区溢出) | 不支持(可能导致接收方缓冲区溢出) |
头部开销 | 较大(固定 20 字节头部,可选扩展字段) | 极小(固定 8 字节头部,无扩展字段) |
传输效率 | 较低(连接建立、确认重传等过程增加延迟) | 较高(无连接建立和确认机制,实时性强) |
适用场景 | 文件传输、网页加载、登录认证等对可靠性要求高的场景 | 视频直播、在线游戏、物联网等对实时性要求高的场景 |
端口占用 | 单端口可建立多个连接(基于四元组:源 IP/端口、目的 IP/端口) | 单端口对应一个连接(数据报直接绑定端口) |
错误处理 | 自动重传(超时重传、快速重传机制) | 不处理(丢包需应用层自行解决) |
二者最大的区别就是:TCP可靠,UDP实时
TCP(传输控制协议)和 HTTP(超文本传输协议),二者分别位于传输层,应用层,HTTP协议依赖于TCP协议,(值得注意的是,传统的HTTP(/1.1和/2)基于TCP,但也存在一些局限性,如队头阻塞。新一代的HTTP/3做出了重大改变,它不再使用TCP作为传输层协议,而是基于QUIC协议(运行在UDP之上),旨在进一步提升传输效率和降低延迟)
留言
有问题请指出,你可以选择以下方式:
- 在下方评论区留言
- 邮箱留言
- Title: 常用的通信协议总结
- Author: H_Haozi
- Created at : 2025-05-03 11:22:45
- Updated at : 2025-09-23 15:23:54
- Link: https://redefine.ohevan.com/2025/05/03/embedded_Communication Protocol/
- License: This work is licensed under CC BY-NC-SA 4.0.